package org.lanqiao.tjut.validator;

import org.lanqiao.tjut.bean.TBStudentBean;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;

public class StudentInfoValidator implements Validator {

	@Override
	public boolean supports(Class<?> clazz) {
		// 检验验证的类是否是目标类
		// 该方法用于确认当前被验证的这个类clazz对象是不是本验证类作用的目标类
		return TBStudentBean.class.equals(clazz);
	}

	/*
	 * target-是被验证的类 errors-是未验证通过时的错误信息对象（也就是把错误信息放入该对象中传入前台页面进行显示）
	 */
	@Override
	public void validate(Object target, Errors errors) {
		// target就是要验证的pojo实体类类（从controller层传过来的，已经完成的数据的转换映射初始化处理）
		// 进行验证业务逻辑处理
		// 将验证对象回复为原来的类(塑型-父类还原为子类类型)
		TBStudentBean stuB = (TBStudentBean) target;
		// 验证用户名不能为空
		if (stuB.getStuName() == null || stuB.getStuName().equals("")) {
			// 验证为通过，设置错误提示信息
			/*
			 * 第一个参数表单域field（表单控件的name/path属性）(这里是一个一一映射的关系)
			 * 第二个参数国际化资源文件中的key值（国际化properties文件中 = 左边的部分）
			 * 第三个参数国际化资源文件中占位符的值（参数类型时是：new Object[]{}）
			 * 第四个参数错误提示信息（默认，如果有第二个参数的值，则优先使用第二个参数的值）
			 */			
			errors.rejectValue("stuName", "org.lanqiao.tjut.studentInfo.validator.msgNull", new Object[] { "用户名" }, "不能为空!");
		}
		

	}

}
